# AsmTask
Task: 

Взаимодействие C/C++ и языка ассемблера.
Дан текст (последовательность символов), содержащий не более 100 элементов. Признаком конца
текста считается символ с кодом '\0' .
Требуется:
– ввести текст с клавиатуры и записать его в память ЭВМ;
– определить, обладает ли этот текст заданным свойством, указанным в вашем варианте задания;
– преобразовать текст по правилу 1 вашего задания, если он обладает заданным свойством, и по правилу 2 в противном случае;
– вывести на экран исходный и преобразованный тексты, а также номер и формулировку применённого правила.

Требования к программе
1. Ввод и вывод, выделение памяти, тестовая оснастка и логика выбора действий реализуются на языке C/C++.
2. Действия: проверка свойства, применение правила No 1 и правила No 2 преобразования текста, –– реализуются на языке ассемблера для архитек-
туры Intel x86_64 в синтаксисе AT&T. Каждое действие следует разместить в отдельном модуле (файле). Реализация действия может состоять
из нескольких функций (процедур). Формулировки свойства текста и правил его преобразования для вашего варианта следует разместить в
комментариях соответствующих модулей (в начале файла).
3. Вывод исходного текста должен быть выполнен сразу после ввода, до анализа и преобразования.
4. Вывод преобразованного текста должен быть выполнен только после завершения преобразования.
5. Программа должна сохранять работоспособность при любых входных данных.
6. Необходимо разработать «тестовую оснастку» для выполнения автоматического тестирования.

Варианты
Свойство текста
1. Текст оканчивается заглавной латинской буквой, которая больше не встречается в тексте.
2. Текст начинается цифрой и оканчивается цифрой, причём эти цифры различны.
3. Текст начинается латинской буквой и оканчивается латинской буквой.
4. Текст содержит не менее трёх латинских букв.
5. Текст содержит равное количество заглавных и строчных латинских букв.
6. Текст не содержит иных символов, кроме цифр и латинских букв.

Правило No 1
1. Заменить каждую заглавную латинскую букву следующей по алфавиту (A → B, B → C, ..., Z → A).
2. Заменить каждую ненулевую цифру соответствующей ей по порядковому номеру строчной буквой латинского алфавита (1 → a, 2 → b, и т. д.).
3. Заменить каждую заглавную латинскую букву цифрой, числовое значение которой равно остатку от деления порядкового номера буквы в
алфавите на десять.
4. Заменить каждую строчную латинскую букву соответствующей заглавной буквой (a → A, b → B, ..., z → Z).
5. Заменить каждую заглавную латинскую букву соответствующей строчной буквой (A → a, B → b, ..., Z → z).
6. Заменить каждую заглавную латинскую букву «симметричной» в алфавите (A → Z, B → Y, ..., Z → A).

Правило No 2
1. Перенести в начало текста все входящие в него цифры с сохранением порядка их следования.
2. Перевернуть текст, не используя дополнительную память.
3. Повторить каждый символ текста.
4. Удалить из текста все повторные вхождения его первого символа.
5. Оставить в тексте только те символы, которые входят в него ровно один раз.
6. В каждой группе следующих подряд одинаковых символов оставить только один.
